<?php
/**
 * +--------------------------------------------------------------
 * | eLuoPHP
 * +--------------------------------------------------------------
 * | Copyright (c) 2016-2018 http://qxwoo.cn All rights reserved.
 * +--------------------------------------------------------------
 * | y139w [y139w@163.com]
 * +--------------------------------------------------------------
 * | 框架助手函数文件
 * +--------------------------------------------------------------
 */

use \luo\Session;
use \luo\Config;
use \luo\Url;

if(!function_exists('url')){

    /**
     * URL地址生成函数
     * @param string $uri
     * @param array $param
     * @return string
     */
    function url($uri = '', $param = []){

        $url = Url::instance();
        if(!is_array($param)){
            parse_str($param, $args);
            $param = $args;
        }
        return $url->build($uri, $param);

    }

}

if (!function_exists('session')) {

    /**
     * Session管理
     * @param null $name    session项的key
     * @param bool $value   对应值，如果为null就是删除对应项，如果想要销毁整个session请传递第三个参数
     * @param bool $destroy 是否对整个session销毁
     * @return array|mixed
     */
    function session($name = null, $value = false, $destroy = false)
    {

        $session = Session::instance();
        if(empty($name) && empty($value)){
            return $session->get();
        }
        if(is_string($name)){
            if(!is_null($value) && !empty($value)){
                $session->set($name, $value);
            }else {
                if (is_null($value)) {
                    if($destroy){
                        $session->destroy($name);
                    }else{
                        $session->delete($name);
                    }
                } else {
                    return $session->get($name);
                }
            }
        }
        if(is_array($name)){
            $session->set($name);
        }

    }
}

if (!function_exists('config')) {
    /**
     * 获取配置信息
     * @param string $name
     * @return array|mixed|null
     */
    function config($name = ''){

        $config = Config::get();
        if(!empty($name) && is_string($name)){
            return $config[$name];
        }
        return $config;
    }

}

if(!function_exists('dump')){
    /**
     * 浏览器友好的变量输出
     * @param mixed         $var 变量
     * @param boolean       $echo 是否输出 默认为true 如果为false 则返回输出字符串
     * @param integer       $flags htmlspecialchars flags
     * @return void|string
     */
    function dump($var, $echo = true, $flags = ENT_SUBSTITUTE)
    {
        ob_start();
        var_dump($var);

        $output = ob_get_clean();
        $output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', $output);

        if (PHP_SAPI == 'cli') {
            $output = PHP_EOL . $output . PHP_EOL;
        } else {
            if (!extension_loaded('xdebug')) {
                $output = htmlspecialchars($output, $flags);
            }
            $output = '<pre>' . $output . '</pre>';
        }
        if ($echo) {
            echo($output);
            return ;
        } else {
            return $output;
        }
    }
}